package com.zjitc.service;

import com.zjitc.model.Order;
import com.zjitc.model.OrderItem;
import com.zjitc.model.Page;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Create by IntelliJ IDEA
 *
 * @author: lhl
 * @date-Time: 2018/4/6 0006
 * @description:
 */
public interface OrderService {

    /**
     * 用户由购物车提交订单，，添加到数据库和缓存
     *
     * @param order
     */
    void add(Order order);

    /**
     * 将该用户购物车内的内容添加到订单中
     *
     * @param session
     */
    void carToOrder(HttpSession session);

    /**
     * 返回某个用户的订单缓存分页
     *
     * @param uid
     * @param pageId
     * @param pageSize
     * @return
     */
    Page<Order> findByUid(String uid, int pageId, int pageSize);

    /**
     * 删除订单
     *
     * @param oid
     */
    void deleteByOid(String oid);

    /**
     * pageHelper 方式返回分页
     *
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<Order> findOrders(int pageNum, int pageSize);

    /**
     * 通过oid查找返回订单内的商品内容
     *
     * @param oid
     * @return
     */
    List<OrderItem> findOrderItemsByOid(String oid);

    /**
     * 管理员通过oid查找某个买家的订单内容
     *
     * @param oid
     * @return
     */
    Order findBuyerByOid(String oid);

    /**
     * 返回某个订单内容
     *
     * @param oid
     * @return
     */
    Order findOrderByOid(String oid);

    /**
     * 修改订单
     *
     * @param order
     */
    void update(Order order);

    /**
     * 用户付款后修改订单的状态（ 0--未付款 1--已付款 -1-已退款 ）
     *
     * @param oid
     */
    void updateOrderState(String oid);

    /**
     * 秒杀某个产品生成订单
     *
     * @param pid
     * @param count
     * @param session
     * @return
     */
    Order sckSkillRabbit(String pid, int count, HttpSession session);
}
